Fluent API এবং Data Annotation দিয়ে Model Configuration

Microsoft Technologies - এন্টিটি ফ্রেমওয়র্ক (Entity Framework) Code First Approach |
202
202

Entity Framework (EF) ব্যবহার করার সময়, ডেটাবেস মডেল কনফিগারেশন অত্যন্ত গুরুত্বপূর্ণ। আপনি Entity Framework-এর মাধ্যমে ডেটাবেস স্কিমা কনফিগার করার জন্য দুটি প্রধান পদ্ধতি ব্যবহার করতে পারেন: Fluent API এবং Data Annotation। দুটি পদ্ধতিই মডেল ক্লাসের বিভিন্ন বৈশিষ্ট্য নির্ধারণ করতে সাহায্য করে, তবে তাদের ব্যবহার এবং কার্যকারিতায় কিছু পার্থক্য রয়েছে। এই টিউটোরিয়ালে, আমরা Fluent API এবং Data Annotation এর মাধ্যমে Entity Framework মডেল কনফিগার করার পদ্ধতি আলোচনা করব।


Data Annotation দিয়ে Model Configuration

Data Annotation হল একটি সিম্পল এবং ডেকোরেটিভ পদ্ধতি, যা মডেল ক্লাসের প্রপার্টিতে অটোমেটিক কনফিগারেশন যুক্ত করতে ব্যবহৃত হয়। এটি মূলত ক্লাস এবং প্রপার্টি লেভেলে অ্যাট্রিবিউট ব্যবহার করে মডেল কনফিগার করে।

Data Annotation এর কিছু গুরুত্বপূর্ণ অ্যাট্রিবিউট

  1. [Key]: এটি প্রপার্টিকে Primary Key হিসেবে চিহ্নিত করে।

    public class Student
    {
        [Key]
        public int StudentId { get; set; }
    }
    
  2. [Required]: প্রপার্টি অবশ্যই পূর্ণ করতে হবে।

    public class Student
    {
        public int StudentId { get; set; }
        [Required]
        public string Name { get; set; }
    }
    
  3. [StringLength]: একটি প্রপার্টির সর্বোচ্চ বা সর্বনিম্ন দৈর্ঘ্য নির্ধারণ করে।

    public class Student
    {
        public int StudentId { get; set; }
        [StringLength(100, MinimumLength = 3)]
        public string Name { get; set; }
    }
    
  4. [Column]: প্রপার্টির জন্য কাস্টম কলাম নাম নির্ধারণ করে।

    public class Student
    {
        [Column("Student_Name")]
        public string Name { get; set; }
    }
    
  5. [ForeignKey]: একটি প্রপার্টি ফোরেন কী (Foreign Key) হিসেবে কাজ করবে তা চিহ্নিত করে।

    public class Student
    {
        public int StudentId { get; set; }
        [ForeignKey("Course")]
        public int CourseId { get; set; }
    }
    
  6. [Range]: একটি প্রপার্টির জন্য একটি নির্দিষ্ট রেঞ্জ নির্ধারণ করে।

    public class Student
    {
        public int StudentId { get; set; }
        [Range(18, 60)]
        public int Age { get; set; }
    }
    

Data Annotation এর সুবিধা

  • সহজ এবং কোডের মধ্যে সরাসরি কনফিগারেশন করতে পারে।
  • ডেটাবেস স্কিমা তৈরির জন্য কোড-এমবেডেড কনফিগারেশন প্রদান করে।
  • স্বল্পকোড সমাধান, যেখানে বেশি কনফিগারেশন প্রয়োজন হয় না।

Fluent API দিয়ে Model Configuration

Fluent API হল আরও ফ্লেক্সিবল এবং শক্তিশালী কনফিগারেশন পদ্ধতি, যা DbContext ক্লাসের OnModelCreating মেথডে ব্যবহৃত হয়। এটি ডেটাবেসের আচরণ এবং কাঠামো কনফিগার করার জন্য খুবই উপযোগী এবং Data Annotation এর তুলনায় আরও বেশি কনফিগারেশন কাস্টমাইজেশন প্রদান করে।

Fluent API এর উদাহরণ

  1. Primary Key Configuration: Fluent API এর মাধ্যমে একটি প্রপার্টি প্রাইমারি কী (Primary Key) হিসেবে কনফিগার করা যায়।

    modelBuilder.Entity<Student>()
        .HasKey(s => s.StudentId);
    
  2. Required Field Configuration: কোনো প্রপার্টি নাল (null) হতে পারবে না, এটি কনফিগার করতে Fluent API ব্যবহার করা হয়।

    modelBuilder.Entity<Student>()
        .Property(s => s.Name)
        .IsRequired();
    
  3. Max Length এবং Min Length Configuration: প্রপার্টির সর্বোচ্চ ও সর্বনিম্ন দৈর্ঘ্য কনফিগার করা।

    modelBuilder.Entity<Student>()
        .Property(s => s.Name)
        .HasMaxLength(100)
        .HasMinLength(3);
    
  4. Foreign Key Configuration: Fluent API ব্যবহার করে একটি ফোরেন কী (Foreign Key) সম্পর্ক কনফিগার করা।

    modelBuilder.Entity<Student>()
        .HasOne(s => s.Course)
        .WithMany(c => c.Students)
        .HasForeignKey(s => s.CourseId);
    
  5. Table and Column Naming: Fluent API ব্যবহার করে টেবিল ও কলামের নাম পরিবর্তন করা।

    modelBuilder.Entity<Student>()
        .ToTable("StudentsTable");
    
    modelBuilder.Entity<Student>()
        .Property(s => s.Name)
        .HasColumnName("Student_Name");
    
  6. Indexing: প্রপার্টির উপর ইনডেক্স তৈরি করতে Fluent API ব্যবহার করা হয়।

    modelBuilder.Entity<Student>()
        .HasIndex(s => s.Name)
        .IsUnique();
    

Fluent API এর সুবিধা

  • আরও বেশি কাস্টমাইজেশন এবং উন্নত কনফিগারেশন সুবিধা প্রদান করে।
  • টেবিলের সম্পর্ক, ডেটাবেস কনফিগারেশন, এবং প্রপার্টি বৈশিষ্ট্য গুলি অত্যন্ত বিস্তারিতভাবে কনফিগার করা যায়।
  • Data Annotation এর চেয়ে আরও শক্তিশালী এবং ফ্লেক্সিবল পদ্ধতি।

Fluent API বনাম Data Annotation: তুলনা

বৈশিষ্ট্যData AnnotationFluent API
কনফিগারেশন স্তরসরল এবং সোজা; মডেল ক্লাসে কনফিগারেশন করা হয়।শক্তিশালী এবং বিস্তারিত কনফিগারেশন সম্ভব।
কাস্টমাইজেশনসীমিত কাস্টমাইজেশন প্রদান করে।উন্নত কাস্টমাইজেশন এবং ফ্লেক্সিবল কনফিগারেশন।
উপযোগিতাছোট প্রজেক্ট বা সহজ কনফিগারেশন সমাধান।বৃহৎ প্রজেক্টে বা জটিল কনফিগারেশন প্রয়োজন হলে উপযোগী।
কোডের পরিমাণকম কোড, সরাসরি প্রপার্টিতে অ্যাট্রিবিউট ব্যবহার।কিছুটা বেশি কোড লিখতে হয়, তবে আরও শক্তিশালী কনফিগারেশন।

সারাংশ

Data Annotation এবং Fluent API দুটি শক্তিশালী পদ্ধতি Entity Framework মডেল কনফিগার করার জন্য। যেখানে Data Annotation দ্রুত এবং সরল কনফিগারেশন এর জন্য উপযোগী, সেখানে Fluent API অধিক কাস্টমাইজেশন এবং শক্তিশালী কনফিগারেশন প্রদান করে। Data Annotation সাধারণত ছোট প্রজেক্ট বা সহজ মডেল কনফিগারেশনের জন্য উপযুক্ত, আর Fluent API বড় প্রজেক্টে এবং জটিল ডেটাবেস কনফিগারেশনে বেশি কার্যকরী। Entity Framework-এ দুটি পদ্ধতিই একসঙ্গে ব্যবহার করা যেতে পারে, তবে প্রজেক্টের চাহিদা অনুযায়ী আপনি যে পদ্ধতিটি প্রয়োজন মনে করবেন, সেটি বেছে নিতে পারেন।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion